home *** CD-ROM | disk | FTP | other *** search
- EXPANDED MEMORY DISK CACHE 1.10
-
-
- 1. Introduction.
-
- EMC110.COM is a program designed to cache IBM-XT/AT hard disks in LIM
- (Lotus-Intel-Microsoft) expanded memory; it will not cache floppies, nor will
- it cache in DOS memory or AT extended memory. It should work with any system
- which has a LIM-spec expanded memory board and software, a disk system which is
- IBM-XT/AT-compatible at the ROM-BIOS level, and NO OTHER STORAGE DEVICES. If
- your system does not clearly fit this description --- in particular, if you
- have a hard disk system which exceeds the 32-meg DOS limit, or if you have any
- removable-media storage devices other than standard floppies --- you should NOT
- use this program without first reading the 'Technical Notes' section below.
-
-
- 2. Installing the Cache.
-
- The cache can be installed by typing
-
- EMC110 [max [min]]
-
- at the DOS prompt, where the optional parameters 'max' and 'min' are the
- maximum and minimum number of expanded memory pages you wish to use for the
- cache (each page is 16K). If 'max' is not specified it defaults to 512. The
- point of specifying 'max' is to prevent the cache from consuming all available
- expanded memory. If 'min' is not specified it defaults to 1. The point of
- specifying 'min' is to prevent the installation of a cache which is too small
- to be effective. Note that the parameters are positional: if you want to
- specify 'min', you must specify 'max' first.
-
- If at least 'min' pages of expanded memory are available, EMC110 installs
- itself as a resident program which, subject to the constraint of 'max', uses as
- much expanded memory as possible and up to 64K of DOS memory. Specifically,
- the program requires approximately 3K plus 128 bytes per expanded memory page
- used. Thus a 1-meg cache uses about 11K of DOS memory and, if you have enough
- expanded memory, a cache of nearly 8 meg should be possible.
-
-
- 3. Changing the Cache Size.
-
- If EMC110 is already installed, the cache size can be dynamically changed
- by typing
-
- EMC110 [max [min]]
-
- at the DOS prompt, where 'max' and 'min' have the same significance as for the
- initial installation. The result is that the cache is purged, all expanded
- memory being used by the cache is released, a new allocation of expanded memory
- of the appropriate size is obtained, and the cache is reinitialized. Since no
- reallocation of DOS memory or manipulation of interrupts is involved, the cache
- can be resized under circumstances which would not permit removing it and
- reinstalling it. However, since the cache retains its original allocation of
- DOS memory, this imposes an additional constraint on the maximum cache size in
- addition to 'max' and the amount of expanded memory available: the new size can
- never exceed the size of the original installation.
-
-
- 4. Disabling the Cache.
-
- If EMC110 is installed, it can be disabled by typing
-
- EMC110 X
-
- at the DOS prompt. The result is that the cache is purged, all expanded memory
- being used by the cache is released, and subsequent BIOS disk interrupts are
- immediately passed on to the prior interrupt handler. However, the cache
- maintains its allocation of DOS memory and its position in the BIOS disk
- interrupt chain, so it can be reactivated as described under 'Changing the
- Cache Size' above.
-
-
- 5. Uninstalling the Cache.
-
- If EMC110 is installed, it may be possible to uninstall it (i.e., remove
- it from memory entirely) by typing
-
- EMC110 XX
- or
- EMC110 XXX
-
- at the DOS prompt. The 'XX' variant will complete the uninstallation only if
- it can be done without fragmenting DOS memory. The 'XXX' variant will complete
- the uninstallation whenever possible. If EMC110 was not the last program to
- insert itself in the BIOS disk interrupt chain, then the uninstallation will
- not be possible. If the uninstallation is not completed, then the cache will
- be left in the disabled state.
-
-
- 6. Querying the Cache.
-
- The status of the cache can be determined by typing
-
- EMC110 ?
-
- at the DOS prompt. The result, in addition to an identifying banner, will be
- the display of either
-
- Cache not installed
- or
- xx page cache installed.
-
- If the cache is installed, but has been disabled or resized to less than its
- original installed size, then either
-
- Cache is disabled
- or
- xx page cache is active
-
- will also be displayed. In addition, if any disk read, disk write, or expanded
- memory errors have occurred, further lines will be displayed detailing these
- errors. Note that the error counts are not reset by resizing or disabling the
- cache. Moreover, only errors which arise from disk or expanded memory requests
- issued by the cache itself are counted.
-
- The display described above is also produced by all other calls to EMC110
- which don't result in removing the cache from memory entirely. The difference
- is that, whereas the other calls result in the cache's being reinitialized, the
- '?' variant leaves the cache intact.
-
-
- 7. Compatibility with Resident Program Managers.
-
- EMC110 should not be used with any program which claims to be able to
- suspend and later reactivate resident programs. All disk caches work by
- keeping copies of disk sectors in memory. If a cache is suspended and later
- reactivated by another program, the cache has no way of knowing that its
- contents may no longer be correct. The results could be disastrous.
-
- EMC110 may also be incompatible with programs which merely uninstall
- resident programs. Such programs presumably work by recording the computer's
- state before a resident program is installed, and restore that state when
- uninstalling it. If you use such a program to uninstall EMC110, or if you
- never use EMC110 to resize, disable or uninstall itself, this technique should
- work. But consider the following scenario: first you install EMC110, then you
- install resident program 'A', then you disable EMC110, then you install
- resident program 'B' which allocates some expanded memory, then you reactivate
- EMC110. At this point the expanded memory owned by EMC110 is probably not the
- same as it was when 'A' was installed, so simply removing 'A' and 'B' from
- memory and restoring the computer's state to what it was when 'A' was installed
- will not work. Admittedly this scenario is unlikely, and some resident program
- managers may even be clever enough to cope with it, but the integrity of your
- hard disk is at stake. If want to use both EMC110 and a resident program
- manager, the safe way is never to use EMC110 to resize, disable or uninstall
- itself.
-
-
- 8. Compatibility with Multitasking Programs.
-
- EMC110 doesn't work with DoubleDOS 4.0. It does appear to work with both
- Microsoft Windows 1.03 and Desqview 1.3 and 2.0. In fact the resize and
- disable features work in a Desqview window. But note that EMC110 must be
- installed BEFORE you invoke Windows or Desqview; you should NEVER install
- EMC110 in a window.
-
-
- 9. Operational Notes.
-
- EMC110 is a pure write-through cache. Both reads and writes are cached in
- the sense that, whenever an actual disk read or write occurs, copies of the
- sectors involved are placed in the cache. But whereas read requests are
- serviced from the cache contents rather than the disk whenever possible, write
- requests are always passed on to the prior interrupt handler. Unlike most
- commercial caches, EMC110 doesn't try to avoid writing to disk by checking if
- the data to be written agrees with the cache contents.
-
- A cache performs like an automatic RAM-disk. A cache is more convenient
- than a RAM-disk in that you don't have to copy files to it, you don't have to
- delete old files to make room for new ones, and you don't have to remember to
- copy updated files back to disk. On the other hand, a cache is slower than a
- RAM-disk, and writing temporary files to disk is a waste of time.
-
- Both caches and RAM-disks provide increased performance by decreasing the
- time required to locate data (the seek time) and the time required to transfer
- it. Whether there is a significant improvement in transfer time is highly
- system dependent; on a system with a slow processor and a fast disk system
- there may be no improvement at all. But RAM-disks eliminate seek time
- entirely, and caches usually reduce it dramatically. Whether there is a
- significant improvement in overall system performance depends on what you're
- doing. If your primary activity is word-processing, all you'll get is a
- psychological lift from seeing the program load faster. But for disk-intensive
- activities like sorting a huge fragmented database, the improvement should be
- significant and, if the files involved are too large to fit in a RAM-disk, a
- cache is your only choice.
-
- One factor in the performance of a cache is its size. The smaller the
- cache the less likely it is that a read request can be serviced from the cache
- contents. If the cache is too small, then the time spent copying each newly
- accessed sector into the cache (replacing previously accessed sectors) may
- exceed the time saved by occasionally finding the desired sector in the cache.
- The result will be a degradation rather than an improvement in performance. On
- the other hand, the larger the cache the longer it may take to find a sector in
- it. Ideally the cache should be just large enough to contain all the sectors
- that are currently being accessed, but using an unnecessarily large cache is
- preferable to using one that is too small.
-
- As you use EMC110, you may find that the cache doesn't always contain
- everything that you think it should. There are two reasons why such behavior
- may be consistent with correct operation of the program. First, the cache may
- be too small. Second, EMC110 organizes cached sectors into groups, and its
- response to any error or unexpected condition is to purge either the group
- involved or the entire cache. So a disk error may result in seemingly
- unrelated sectors being purged from the cache, even though the sector causing
- the error may get into the cache on a retry. Similarly, since EMC110 treats
- any request except read, write or status as an "unexpected condition", any such
- request will cause the entire cache to be purged.
-
-
- 10. Technical Notes.
-
- EMC110 works by intercepting calls to interrupt 13h. It assumes that the
- calls it intercepts and passes on can be interpreted as calls to the IBM-XT
- hard disk BIOS, i.e., that the contents of the processor registers have the
- significance described in the IBM-XT Technical Reference Manual. In particular
- it assumes that if the high bit of register DL is 1 then the call is directed
- to a hard disk. It also makes three assumptions that are not explicit in the
- Technical Reference Manual description, namely that all hard disks have non-
- removable media, that all hard disks have 512-byte sectors, and that multi-
- sector requests are serviced by incrementing the sector number, the head number
- and the cylinder number, in that order. If your system contains storage
- devices other than standard XT/AT hard disks and floppies, you must determine
- whether their operation involves interrupt 13h and, if so, whether the above
- assumptions are valid. If they're not, the use of EMC110 will produce
- disastrous results.
-
- EMC110 also uses the drive-parameters subfunction (AH = 8) of interrupt
- 13h for two purposes of its own. First, it uses this subfunction at
- installation time to determine how many sectors per track and how many heads
- each hard disk has; it will not cache hard disks which are not reported by this
- subfunction. Second, communication with an installed copy of EMC110 is
- implemented in part by requesting parameters for a non-existent hard disk. If
- EMC110 is not installed the result should be an error return. If your hard-
- disk BIOS is willing to return parameters for a non-existent disk, no harm
- should be done; EMC110 will simply refuse to install itself.
-
- Except for this non-standard use of the drive-parameters subfunction,
- EMC110 expects requests for only three subfunctions of interrupt 13h: status
- request (AH = 1), read sectors (AH = 2), and write sectors (AH = 3). A request
- for any other subfunction is handled by purging the cache and passing the
- request on.
-
- EMC110 is not re-entrant. Its correct operation depends upon the fact
- that, since the IBM disk BIOS is not re-entrant, no operating system, multi-
- tasking program, or interrupt-driven program dare permit two concurrent calls
- to interrupt 13h. This fact is also the reason for implementing communication
- with an installed copy of EMC110 by making non-standard use of interrupt 13h
- rather than by using a more respectable method.
-
-
- 11. Copyright, Disclaimer, etc.
-
- EMC110 is copyrighted by the author. However, the author hereby grants
- permission for anyone to use this program, and to distribute it freely in
- unmodified form along with this documentation for no more than a nominal media
- charge.
-
- The author makes no claim about this program except that he has done
- everything he could think of to ensure that it is error-free, and that he's
- using it himself. If you use EMC110, you do so with the understanding that
- even the most carefully written program may contain subtle errors that appear
- only after prolonged use, that any resident program is subject to corruption by
- other ill-behaved programs, and that either of these eventualities could result
- in loss of data stored on your disks.
-
- I'm interested in any comments and suggestions you have to make. Even if
- you don't have any comments or suggestions, it's encouraging to hear from
- people who find EMC110 useful. I'm also interested in reports of systems and
- software with which EMC110 doesn't work, but it's unlikely that I'll be able to
- help. While you might be willing to send me copies of the software,
- duplicating your hardware would almost certainly be impossible. I don't return
- long distance calls, but I do make an effort to answer all letters that require
- a reply. Please address any correspondence to
-
- Frank Lozier
- Department of Mathematics
- The Cleveland State University
- Euclid Avenue at East 24th Street
- Cleveland, Ohio 44115
-